package com.bupt.ilink.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bupt.ilink.entity.DatasetMetadata;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bupt.ilink.entity.DatasetRequest;
import com.bupt.ilink.entity.User;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Set;

/**
 * @author zhangbo
 * @description 针对表【dataset_metadata】的数据库操作Service
 * @createDate 2024-07-25 10:53:08
 */
public interface DatasetMetadataService extends IService<DatasetMetadata> {
    boolean createDataset(User user, DatasetRequest datasetProvide, List<MultipartFile> files);

    boolean deleteDataset(Long datasetId);
    /**
     * 获取数据库中所有数据集的名称
     * csv批量导入
     * @return 包含所有名称的集合
     */
    Set<String> getAllNames();

    //  返回数据集 详情文件
    DatasetMetadata getById(String datasetId);

    // 根据关键词 返回数据集
    List<DatasetMetadata> getDatasetsByKeywords(String keywords);

    List<DatasetMetadata> getDatasetsByIds(List<Long> datasetIds);

    //  返回所有公开数据集
    List<DatasetMetadata> getAllPublicDatasets();
    IPage<DatasetMetadata> getPublicDatasetsByPage(Page<DatasetMetadata> page);

    //  增加数据集 下载量
    void incrementDownloadNum(Long datasetId);

    //  增加数据集 分享量
    void incrementShareNum(Long datasetId);
    void incrementClickNum(Long datasetId);
    void incrementFavoriteNum(Long datasetId);

    //  数据集统计
    long count();

}